# 前言
本章开始都是对之前的 DevOps 流程的进一步升级,所以内容跟前端的关联已经越来越少,可能读起来会有一定的学习成本,尽可能用最简单的方式阐述。
# Docker
# 什么是 Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 优点如下:
- 运行速度快,启动,停止,开始,重启等等操作都是以秒或毫秒为单位的;
- 轻量,最小的成本完成一个虚拟机带来的效果;
- 环境隔离,每个 Docker 都可以单独启动,天然的环境隔离优势;
- 跨段运行,Docker 的运行不限于宿主系统,可以运行在多种宿主系统中;
- 集成,使用 Docker compose 可以集成一整套项目运行环境;
- 云端,Docker 目前在各大云服务里面是集成比较简单也友好的
# 为什么要使用 Docker
虽然 Docker 的优点非常多,比如上面所说的环境隔离、跨端运行等等。但是要思考一个问题,在我们的 DevOps 中为什么要引入 Docker?
首先任何一种技术的引入或者流程的改进都是需要成本的,如果引入新技术的成本远大于目前的可接受范围,那么这个技术是否依然值得引入?
假如只是为了单纯使用的新技术,那么新技术引入带来的副作用是否能承受,有没有预备方案进行兜底,这都是需要去考虑的。
在完成上述一系列简单的思考确认可以进行下一步之后,再考虑接入 Docker。
市面上不少前端发布都是将项目代码在 Docker 进行构建,再在 Docker 里面启动一个 Nginx 服务,提供静态资源访问,这样确实没问题,但是如果仅仅是静态资源的话,这种操作是有点过于沉重的。构建完成直接将静态资源上传到文件服务器例如 COS 或者 OSS 中,显然是更为方便省事。
当然如果发布的是 Nodejs 这种的后端系统,那么采用这种构
